<?php

//4.2.1.2 函数通过引用传递参数
function f(&$name)
{
    $name .= '丰';
}

$n = '张三';
f($n);
echo "姓名=$n\n"; //姓名=张三丰

//4.2.1.3 默认参数都是放在参数列表的最后边
function f2($name, $age = 20)
{
    echo "$name, $age\n";
}

f2('张三'); //张三, 20
f2('李四', 22); //李四, 22

//4.2.1.4 可变数量的参数列表
function sum(...$numbers)
{
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4), "\n"; //10
echo sum(), "\n"; //0

//调用函数时参数传递有两种方式：位置参数、命名参数
function f3($name, $age = 20, $sex = '男')
{
    echo "$name, $age, $sex\n";
}

f3('杨柳依依', sex: '女'); // 杨柳依依, 20, 女
f3(sex: '女', name: '杨柳依依', age: 18);
//4.2.6 匿名函数
$a = array_map(function ($value) {
    return $value * $value;
}, [10, 20, 30]);
print_r($a);

$a = array_map(function ($v1, $v2) {
    return $v1 + $v2;
}, [1, 2, 3], [10, 20, 30]);
print_r($a);